An integration server is a computer server that facilitates the development of business processes, more generally integration processes, that access various applications. The applications may include prepackaged applications developed by an application provider and customized or legacy applications developed by an enterprise. The applications may be of any type such as Customer Relationship Management (“CRM”) applications, Enterprise Resource Planning (“ERP”) applications, Employee Relationship Management (“ERM”) applications, and so on. An integration server may provide an integration server interface for each application through which a business process can access the services of an application and can provide services to the application. Since various applications often provide application programming interfaces that use formats, protocols, and other features that may be very different from the applications of other application providers, each integration server vendor typically defines their own integration server interfaces to each application. The integration server interfaces of an integration server vendor typically provide to the integration processes a more uniform interface to the applications.
FIG. 1 is a block diagram illustrating a typical architecture of an integration server. The integration server 100 provides access to various applications 101-104. In this example, application 101 and application 102 are the same type of application but are provided by different application providers. For example, applications 101 and 102 may be CRM applications provided by different vendors. Application 103 and application 104 are the same type of application, such as ERP applications. The parentheticals within the blocks representing applications 101-104 indicate the type of application and the application. For example, the parenthetical “(2, 1)” in the block representing application 103 represents an application type of “2” provided by application provider “1.” Each integration server may provide integration server interfaces 111-114 to applications 101-104, respectively. Thus, each integration server provides at least one integration server interface for each application that it supports. The parentheticals in the blocks representing integration server interfaces 111-114 represent the type of application, application, and integration server. For example, the parenthetical “(2, 1, k)” in the block representing integration server interface 113 indicates that the interface is for an application type of “2” provided by application provider “1” for the integration server provided by vendor “k.” Each business process 150 that is implemented on an integration server is developed specifically to use the integration server interfaces of that integration server for each application. Thus, if an enterprise that has developed a business process using application 101 and application 104 wants to switch to application 103, the enterprise needs a new version of the business process developed specifically to access integration server interface 113, rather than integration server interface 114. More generally, if a business process is developed to accommodate all possible combinations of applications provided by various integration servers, then the number of versions of the business processes needed to access the different applications is represented by the following equation:
  m  ⁢            ∏      i        ⁢          n      i      where m represents the number of integration servers, i represents the types of applications that the business process accesses, and ni represents the number of different applications for application type i. For example, if there are five integration servers, a business process accesses three types of applications, and each type of application has four possible applications, then the number of versions of the business process that needs to be developed to access all combinations of integration servers and applications is 320.
Because the number of versions is so large, providers of business processes either limit the integration servers and applications that their business processes support or spend considerable resources developing many different versions of each business process. Similarly, an enterprise that wants to switch integration servers or applications needs to ensure that the provider of its business processes can provide a version that supports the new integration server and applications. In addition, if the enterprise has custom business processes, then it would need to develop new versions to support the new integration server and applications. It would be desirable to have business processes that were portable from one integration server to another and from one application to another.